/**
 * Created by apple on 2017/7/3.
 */

var express = require('express');
var router = express.Router();

var UserCashRouter = module.exports;
var AdminToken = require('../db/user_tokens.js');
var UserCash = require('../dao/user_cash.js');
var Config = require('../config');

/**
 * 用户账户信息
 * @param  token 用户token
 *         url/admin_user/applyCash
 */
UserCashRouter.userAccount = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    AdminToken.checkLogin(par.token, function (err, userInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!userInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if(userInfo.isAdmin){
            res.json(new ERR('token有误', 403));
            return;
        }

        par.uid = userInfo.uid;
        if (!par.app_sid) par.app_sid = 'usuz';
        UserCash.userAccountInfo(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });

}
router.post('/userAccount', UserCashRouter.userAccount);



/**
 * 用户申请提现
 * @param  token 用户token,type(有传默认是合作项目的提现，不限制提现金额)
 *         url/admin_user/applyCash
 */
UserCashRouter.applyCash = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.cash || isNaN(par.cash) || par.cash < 0.01) {
        res.json(new ERR('提现金额格式有误', 400));
        return;
    }

    // if (par.cash < 100) {
    //     res.json(new ERR('提现金额不能少于100', 400));
    //     return;
    // }

    if (!par.cash_type) {
        res.json(new ERR('提现类型不为空', 400));
        return;
    }

    if (par.cash_type != 12 && par.cash_type != 13) {
        res.json(new ERR('提现类型格式有误', 400));
        return;
    }

    if (!par.plat_account) {
        res.json(new ERR('plat_account不为空', 400));
        return;
    }

    par.cash = parseFloat(par.cash).toFixed(2);
    if (!par.app_sid) par.app_sid = 'usuz';
    AdminToken.checkLogin(par.token, function (err, userInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!userInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if(userInfo.isAdmin){
            res.json(new ERR('token有误', 403));
            return;
        }

        par.uid = userInfo.uid;
        par.user_account = userInfo.account;
        par.account = userInfo.account;
        if (checkUnCashAccount(userInfo.account)) {
            res.json(new ERR('抱歉，合作期间您的提现功能暂时关闭', 400));
            return;
        }
        if (checkUnCashAccount2(userInfo.account)) {
            res.json(new ERR('抱歉，账号操作异常，您的提现功能暂时关闭', 400));
            return;
        }
        UserCash.canDraw(par,function (err,data) {
            if (err) {
                res.json(new ERR(err, 400));
                return
            }
            par.isFree = data.isFree;
            delete par.amount;
            if(data.amount) par.amount = data.amount;
            UserCash.addCashApply(par, function (err, result) {
                if (err) {
                    res.json(new ERR(err, 400));
                    return;
                }
                res.json(new PKG(result));
            });
        });

    });


}
router.post('/applyCash', UserCashRouter.applyCash);

function checkUnCashAccount(account) {
    var unCashAccount = {
        15259811051:true,
        18965100016:true,
        13602115060:true,
        15260249876:true,
    };
    if (unCashAccount[account]) return true;
    return false;
}
function checkUnCashAccount2(account) {
    var unCashAccount = {
        15980800706:true,
        15298468550:true,
        18106972509:true,
        18850069719:true
    };
    if (unCashAccount[account]) return true;
    return false;
}

/**
 * 管理员操作提现订单
 * @param  token 管理员token
 *         url/admin_user/applyCash
 */
UserCashRouter.handleCashApply = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }
    if (!par.id) {
        res.json(new ERR('订单id不为空', 400));
        return;
    }
    if (!par.status) {
        res.json(new ERR('操作状态不能为空', 400));
        return;
    }

    if (par.status != 13 && par.status != 14) {
        res.json(new ERR('状态格式有误', 400));
        return;
    }

    if (par.status == 13 && !par.comment) {
        res.json(new ERR('失败理由不为空', 400));
        return;
    }


    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'cash', function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }
        if (adminInfo.role.indexOf('taoke') >= 0 && adminInfo.app_sid == 'usuz') {
            par.taoke_account = adminInfo.account;
        }

        //去修改
        UserCash.handleCashApply(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });


}
router.post('/handleCashApply', UserCashRouter.handleCashApply);

/**
 * 管理员操作提现订单
 * @param  token 管理员token
 *         url/admin_user/applyCash
 */
UserCashRouter.handleCashApplyBySrv = function (req, res) {
    var par = paramAll(req);


    if (!par.id) {
        res.json(new ERR('订单id不为空', 400));
        return;
    }
    if (!par.status) {
        res.json(new ERR('操作状态不能为空', 400));
        return;
    }

    if (par.status != 13 && par.status != 14) {
        res.json(new ERR('状态格式有误', 400));
        return;
    }

    if (par.status == 13 && !par.comment) {
        res.json(new ERR('失败理由不为空', 400));
        return;
    }
    if(!checkSrvConnection(par)) return res.json(new ERR('访问受限',400));

    //去修改
    UserCash.handleCashApply(par, function (err, result) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/handleCashApplyBySrv', UserCashRouter.handleCashApplyBySrv);


/**
 * 查看提现记录列表
 * 必填：
 * @param  token  管理员或用户token
 * 选填：
 * @param  startTime  查询起始时间
 * @param  endTime  查询结束时间
 * @param  app_sid  产品app_sid
 * @param  open_shop 是否是开放商城，如果是的话查询有区别
 *         url/admin_user/cashList
 */
UserCashRouter.cashList = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.app_sid) par.app_sid = 'usuz';

    if (par.endTime && !par.startTime) {
        res.json(new ERR('起始时间不为空', 400));
        return;
    }

    AdminToken.checkLogin(par.token, function (err, userInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!userInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if (userInfo.isAdmin) {//如果是管理员查询

            //检查是不是系统管理员或产品管理员
            if (userInfo.role.indexOf('admin') < 0 && userInfo.role.indexOf('adm_' + par.app_sid) < 0 && userInfo.role.indexOf('finance') < 0) {
                if(par.app_sid == 'usuz' && userInfo.role.indexOf('taoke') >= 0 ){
                    par.taoke_account = userInfo.account;
                }else if(userInfo.role.indexOf('finance') < 0){
                }else {
                    res.json(new ERR('无权限', 400));
                    return;
                }
            } else {
                delete par.taoke_account;
                par.isAdmin = true;
            }

        } else {//如果是用户查询

            //用户查询加上具体account
            par.user_account = userInfo.account;

        }

        //去查询
        UserCash.cashList(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });

}
router.post('/cashList', UserCashRouter.cashList);


/**
 * 查看当前余额
 */
function formatMoney(userInfo, result) {
    switch (userInfo.account) {
        case '18965682601' :
            result.money = result.money ? parseFloat(result.money) + 100000 : 100000;
            return result;
            break;
        case '13860491385' :
            result.money = result.money ? parseFloat(result.money) + 30000 : 30000;
            return result;
            break;
        case '18649669946' :
            result.money = result.money ? parseFloat(result.money) + 30000 : 30000;
            return result;
            break;
        case '18659706807' :
            result.money = result.money ? parseFloat(result.money) + 30000 : 30000;
            return result;
            break;
        default:
            return result;
    }
}
/*
* param token,app_sid,type(可选)
*
* */
UserCashRouter.getMoney = function (req, res) {
    var par = paramAll(req);

    AdminToken.checkLogin(par.token, function (err, userInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!userInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if (!par.app_sid) par.app_sid = 'usuz';

        par.uid = userInfo.uid;

        //去查询
        UserCash.getMoney(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            result = formatMoney(userInfo, result);
            res.json(new PKG(result));
        });

    });

}
router.post('/getMoney', UserCashRouter.getMoney);


module.exports = router;